﻿// Copyright (c) Pomelo Foundation. All rights reserved.
// Licensed under the MIT. See LICENSE in the project root for license information.

namespace Microsoft.EntityFrameworkCore.Metadata
{
    public interface IMyCatPropertyAnnotations : IRelationalPropertyAnnotations
    {

        MyCatValueGenerationStrategy? ValueGenerationStrategy { get; }


        /// <summary>
        ///     Gets the sequence name to use with
        ///     <see cref="SqlServerPropertyBuilderExtensions.ForSqlServerUseSequenceHiLo" />
        /// </summary>
        string HiLoSequenceName { get; }

        /// <summary>
        ///     Gets the schema for the sequence to use with
        ///     <see cref="SqlServerPropertyBuilderExtensions.ForSqlServerUseSequenceHiLo" />
        /// </summary>
        string HiLoSequenceSchema { get; }

        /// <summary>
        ///     Finds the <see cref="ISequence" /> in the model to use with
        ///     <see cref="SqlServerPropertyBuilderExtensions.ForSqlServerUseSequenceHiLo" />
        /// </summary>
        /// <returns> The sequence to use, or <c>null</c> if no sequence exists in the model. </returns>
        ISequence FindHiLoSequence();
    }
}
